

//引用模块
const fs = require('fs');
const path = require('path');
const router = require('koa-router')();


////封装方法

//通过目录获取目录下所有的文件
function getEachControllerFiles(dirname) {

    //读取目录
    let file = fs.readdirSync(dirname);


    return file.filter(function (x) {
        return x !== 'index.js' && x.endsWith('.js');

    })

}

// 遍历路由，并引用每个路由的模块
function registeRoutes(files) {

    files.map(function (x) {

        //合并目录并引用模块
        let fileMod = require(path.join(__dirname, x));

        for (let r in fileMod) {

            let type = fileMod[r][0];
            let fn = fileMod[r][1];

            // console.log("类型"+type);
            // console.log("异步函数"+fn);

             
            if(type=="get"){
                router.get(r,fn)
            }else if(type=="post"){
                router.post(r,fn);
            } else if(type=="put"){
                router.put(r,fn);
            } else if(type=="delete"){
                router.delete(r,fn);
            } else{
                router.post(r,async()=>{
                    ctx.body="当前请求类型错误"
                });
            }
             
        }

    })
}

module.exports = function () {

     
    console.log(__dirname);

    let dirName = __dirname;

     console.log("当前目录"+dirName);
      
    let files = getEachControllerFiles(dirName)
 
      
     console.log("当前文件"+files);

     registeRoutes(files);

    return router.routes();
}













////直接引用
// function res(){

//     //获取当前目录下的所有文件
//     let files = fs.readdirSync(__dirname);

//     files.map((x) => {

//         //判断是否为js文件,并且不为index.js文件·
//         if (x.endsWith('.js') && x!=="index.js") {

//             //遍历controller下引用模块
//             const routerObj = require(path.join(__dirname, x))

//             console.log(routerObj);

//             for (let r in routerObj) {

//                 let type = routerObj[r][0];
//                 let value = routerObj[r][1];

//                 // console.log("当前的请求" + type);
//                 if (type == "get") {
//                     router.get(r, value);
//                 } else {
//                     router.post(r, value);
//                 }
//             }

//         }

//     })

//     //返回在app里的注册函数
//     return router.routes();
// }

// module.exports = res()